强大的在线编译器工具Compiler Explorer

昨天是南方的小年夜,调休,一早上班遇到 2023 年的第一场雪,好兆头

(视频来自老苏的朋友圈,采用了慢动作拍摄)


什么是 Compiler Explorer ?

Compiler Explorer 是一个交互式编译器探索网站。支持 CC++C#F#RustGoDHaskellSwiftPascalispcPythonJava 或任何其他 30 多种语言编辑代码,允许我们以交互方式编写、编译和反汇编源代码,所有这些都可以在浏览器中轻松完成。可以根据需要指定编译标志。每种语言都支持多个编译器,有许多不同的工具和可视化可用,并且 UI 布局是可配置的。

这个工具应该是给程序员用的,比较偏底层,直接把 30 多种语言编译成了汇编指令,老苏除了觉得很厉害之外,反正是完全不会用的 😳

如果你跟老苏一样,那随便看看就好了;如果你是程序员,建议收藏一下,说不定那天就可能需要用到了;

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 docker-compiler-explorer ,选择第一个 madduci/docker-compiler-explorer,双击直接下载。

镜像有点大

高级设置

勾选 启用自动重新启动

端口

本地端口不冲突就行,不确定的话可以用命令查一下

1
2
# 查看端口占用
netstat -tunlp | grep 端口号
本地端口 容器端口
10240 10240

老苏直接用了默认的端口

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

1
2
3
4
5
6
# 运行容器
docker run -d \
--restart on-failure \
--name compiler-explorer \
-p 10240:10240 \
madduci/docker-compiler-explorer:latest

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
version: "3"

services:
compiler-explorer:
image: madduci/docker-compiler-explorer:latest
container_name: compiler-explorer
ports:
- 10240:10240
restart: on-failure
stop_grace_period: 1m30s

stop_grace_period 是指定在容器无法处理 SIGTERM (或者任何 stop_signal 的信号),等待多久后发送 SIGKILL 信号关闭容器。

然后执行下面的命令

1
2
3
4
5
6
7
8
9
10
# 新建文件夹 compiler-explorer
mkdir -p /volume2/docker/compiler-explorer

# 进入 compiler-explorer 目录
cd /volume2/docker/compiler-explorer

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

启动的过程有点长,从日志看有下载、编译的动作

如果不支持科学上网,会导致编译器下载失败,会有什么影响,老苏就不清楚了

当看到 Listening on http://localhost:10240/

就可以在浏览器中输入 http://群晖IP:10240 看到主界面了

参考文档

compiler-explorer/compiler-explorer: Run compilers interactively from your web browser and interact with the assembly
地址:https://github.com/compiler-explorer/compiler-explorer#readme

Compiler Explorer
地址:https://godbolt.org/

madduci/docker-compiler-explorer: A docker-based version of Matt Godbolt’s compiler-explorer application
地址:https://github.com/madduci/docker-compiler-explorer